package com.study.sort;

/**
 * 冒泡排序
 * <p>
 * 对比相邻的元素,较大的替换到右边
 */
public class BubbleSort extends Sort {

    @Override
    protected String sortName() {
        return "Bubble Sort";
    }

    @Override
    protected void sort(int[] list) {
//        boolean hasSwap;
//        for (int j = list.length - 1; j >= 0; j--) {
//            hasSwap = false;
//            for (int i = 0; i < j; i++) {
//                if (list[i] > list[i + 1]) {
//                    swap(list, i, i + 1);
//                    hasSwap = true;
//                }
//            }
//            if (!hasSwap) {
//                return;
//            }
//        }

        boolean isFinish;
        for (int i = 0; i < list.length; i++) {
            isFinish = true;
            for (int j = 1; j < list.length - i; j++) {
                if (list[j] < list[j - 1]) {
                    isFinish = false;
                    int temp = list[j];
                    list[j] = list[j - 1];
                    list[j - 1] = temp;
                }
            }
            if (isFinish) {
                return;
            }
        }
    }
}
